Crate ibc[][src]

Expand description

This library implements the _I_nter_B_lockchain _C_ommunication (IBC) protocol in Rust. IBC is a distributed protocol that enables communication between distinct sovereign blockchains. Loose analogies may be drawn between the IBC protocol and the TCP/UDP protocols that enable communication over the internet via packet streaming. Indeed, IBC also encodes the notion of ordered and unordered packet streams.

The layout of this crate mirrors the classification of the Interchain Standards. The classification consists of Core, Clients, Applications, and Relayer.

Core consists of the designs and logic pertaining to the transport, authentication, and ordering layers of the IBC protocol, the fundamental pieces.

Clients consists of implementations of client verification algorithms (following the base client interface that is defined in Core) for specific types of chains. A chain uses these verification algorithms to verify the state of remote chains.

Applications consist of various packet encoding and processing semantics which underpin the various types of transactions that users can perform on any IBC-compliant chain.

Relayer contains utilities for testing the ibc crate against the Hermes IBC relayer. It acts as scaffolding for gluing the ibc crate with Hermes for testing purposes.

Modules

Macros

Downcast the given arguments to the associated enum variant.

Type Definitions

Re-export of ICS 002 Height domain type